
package CCT220_Aula11_Exercicio01_13106;

/**
 * ******************************
 * Project: CCT220
 * Package: CCT220_Aula11_Exercicio01_13106
 * Class: Carro
 * Last Change: 22/09/2011 14:42:59
 * Description:
 * ******************************
 * 
 * @author marcel
 * @author 13106
 * 
 */
public class Carro extends TransporteTerrestre implements Motorizado,
        Conduzivel {
	private final int numCilindrada;
	private int       numLitros;
	private boolean   motorLigado;


	/**
	 * ******************************
	 * Constructor for
	 * Package: CCT220_Aula11_Exercicio01_13106
	 * Class: Carro
	 * LastChange: 22/09/2011 14:43:02
	 * ******************************
	 * 
	 * @param nome
	 * @param numPassageiros
	 * @param velocidadeAtual
	 * @param tipo
	 * @param numCilindrada
	 * @param motorLigado
	 * @param numLitros
	 */
	public Carro(String nome, int numPassageiros, int velocidadeAtual,
	        String tipo, int numCilindrada, boolean motorLigado, int numLitros) {

		super(nome, numPassageiros, velocidadeAtual, tipo);
		this.numCilindrada = numCilindrada;
		this.numLitros = numLitros;
		this.motorLigado = motorLigado;
	}


	/**
	 * ******************************
	 * Geter for numCilindrada in
	 * Package: CCT220_Aula11_Exercicio01_13106
	 * Class: Carro
	 * Field: numCilindrada
	 * Last Change: 22/09/2011 14:43:47
	 * Extra Description:
	 * ******************************
	 * 
	 * @return the numCilindrada
	 */
	public int getNumCilindrada() {

		return numCilindrada;
	}


	/**
	 * ******************************
	 * Geter for numLitros in
	 * Package: CCT220_Aula11_Exercicio01_13106
	 * Class: Carro
	 * Field: numLitros
	 * Last Change: 22/09/2011 14:43:47
	 * Extra Description:
	 * ******************************
	 * 
	 * @return the numLitros
	 */
	public int getNumLitros() {

		return numLitros;
	}


	/**
	 * ******************************
	 * Geter for motorLigado in
	 * Package: CCT220_Aula11_Exercicio01_13106
	 * Class: Carro
	 * Field: motorLigado
	 * Last Change: 22/09/2011 14:43:47
	 * Extra Description:
	 * ******************************
	 * 
	 * @return the motorLigado
	 */
	public boolean isMotorLigado() {

		return motorLigado;
	}


	/**
	 * ******************************
	 * Package: CCT220_Aula11_Exercicio01_13106
	 * Class: Carro
	 * Method: embrear
	 * Last Change: 22/09/2011 14:43:54
	 * Description:
	 * ******************************
	 * 
	 */
	public void embrear() {

		this.setVelocidadeAtual(this.getVelocidadeAtual() - 1);
	}


	/*
	 * (non-Javadoc)
	 * 
	 * @see CCT220_Aula11_Exercicio01_13106.Conduzivel#curvar(float)
	 */
	@Override
	public void curvar(float angulo) {

		System.out.println("O " + this.getNome() + " foi curvado de "
		        + (angulo > 70 ? 70 : angulo) + " graus");
	}


	/*
	 * (non-Javadoc)
	 * 
	 * @see CCT220_Aula11_Exercicio01_13106.Motorizado#ligarMotor()
	 */
	@Override
	public void ligarMotor() {

		if (motorLigado) {
			System.out.println("O motor do " + this.getNome()
			        + " ja esta ligado!");
		} else {
			motorLigado = !motorLigado;
			System.out.println("O motor do " + this.getNome()
			        + " acaba de ser ligado!");
		}
	}


	/*
	 * (non-Javadoc)
	 * 
	 * @see CCT220_Aula11_Exercicio01_13106.Motorizado#abastecer(int)
	 */
	@Override
	public void abastecer(int numLitros) {

		this.numLitros += numLitros;
	}

}
